Database systems perform “atomic transactions,” such as adding records to and deleting records from a database so that either all changes take place or none. A “distributed” transaction is one that changes records in multiple databases. Current practice implements distributed transactions with a technology called the “two phase commit protocol,” which implements a distributed transaction by combining multiple atomic transactions into a single computation. Each component transaction executes over a single database. One implementation of the two phase commit protocol alters the internal functioning of a distributed transaction's component transactions. Each component transaction is held open until all the component transactions are ready to finish. If all component transactions have succeeded, then all are committed. If any component transaction fails, then all roll back.
Two phase commit requires a tight linkage between the component transactions. The internal operation of each component transaction, whether it is to commit or roll back, depends on the internal operation of every other component transaction. A controller must therefore maintain a global state between the component transactions.
The tight linkage and global state of the two phase commit protocol have multiple disadvantages:                1. They complicate the implementation of the component transactions.        2. The tight integration of the component transactions requires that all of the component transactions taking part in a distributed transaction are implemented by identical software or at least by software which matches the same version of a complex standard.        3. The tight integration of the component transactions requires that all the component transactions taking part in a distributed transaction execute in the same administrative domain.        4. The extra messaging required to commit or rollback commit component transactions imposes a performance penalty.        5. The component transactions of a distributed transaction hold locks while they wait to commit or to rollback. Consequently, they can only be held open for a short time. Therefore, the communications mechanism connecting the databases on which they run must be very fast, limiting the circumstances in which it is possible to employ a two phase commit protocol.        6. The software implementing a two phase commit protocol is expensive, complicated, error prone, and difficult to install, configure and administer.        
In short, use of a two phase commit protocol requires systems running the same or very similar software, tightly connected by high speed communications links, running in a single administrative domain. Two phase commit protocols, therefore, require an environment with properties that are the opposite of the properties of the environments encountered by contemporary distributed systems, particularly systems working over the World Wide Web.